# -*- coding: utf-8 -*-
# time: 2025/4/23 14:23
# file: model_train_vctor.py
# author: hanson
"""
2013年Google开源了word2vec工具，它可以进行词向量训练，加载已有模型进行增量训练，求两个词向量相似度，求与某个词接近的词语，等等。
功能十分丰富，基本能满足我们对于词向量的需求。下面详细讲解怎么使用word2vec
模型训练
词向量模型训练只需要有训练语料即可，语料越丰富准确率越高，属于无监督学习。

"""
# gensim是自然语言处理的一个重要Python库，它包括了Word2vec
import gensim
from gensim.models import word2vec

# 语句，由原始语句经过分词后划分为的一个个词语
sentences = [['网商银行', '体验', '好'], ['网商银行','转账','快']]

# 使用word2vec进行训练
# min_count: 词语频度，低于这个阈值的词语不做词向量
# size:每个词对应向量的维度，也就是向量长度
# workers：并行训练任务数
model = word2vec.Word2Vec(sentences, min_count=1,batch_words=100, workers=4)

# 保存词向量模型，下次只需要load就可以用了
model.save("./data/word2vec_atec")
# 先加载已有模型
model = gensim.models.Word2Vec.load("./data/word2vec_atec")

# 进行增量训练
corpus = [['网商银行','余利宝','收益','高'],['贷款','发放','快']] # 新增语料
model.build_vocab(corpus, update=True)  # 训练该行
model.train(corpus, total_examples=model.corpus_count, epochs=model.epochs)

# 保存增量训练后的新模型
model.save("./data/word2vec_atec2")
# 验证词相似程度
print(model.wv.similarity('网商银行', '转账'))